#include <stdio.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(int argc, char const *argv[])
{
int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
    if (fd < 0) {
        perror("open failed");
        return -1;
    }

    // 用 dup2 复制 fd 到 stdout（1），此后 printf 会写入文件
    if (dup2(fd, STDOUT_FILENO) < 0) {  // STDOUT_FILENO 即 1
        perror("dup2 failed");
        close(fd);
        return -1;
    }
    close(fd);  // 复制后，原 fd 可关闭（不影响 newfd）

    // 此时 printf 不再输出到终端，而是写入 output.txt
    printf("Hello, redirect!\n");

    return 0;
}
